From 5601b7063f7c3259afcfdadccbe8124d35690c02 Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Fri, 24 Feb 2006 13:38:26 -0700 Subject: [PATCH] [IA64] VTI: Fix two bugs 1. Vmx_check_pending_irq should not be called in vmx_vcpu_set_eoi, because vmx_vcpu_increment_iip is called after vmx_vcpu_set_eoi. That is, the first instruction of guest interrupt handler will be skipped. 2. Remove code segment which was used to send events to VTIdomain, when dom0 was VTIdomain. This is not needed any more, and will cause VTIdomain on SMP-HOST complain "Unexpected interrupt ..." . Signed-off-by: Anthony Xu --- xen/arch/ia64/vmx/vlsapic.c | 3 ++- xen/arch/ia64/vmx/vmx_process.c | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/xen/arch/ia64/vmx/vlsapic.c b/xen/arch/ia64/vmx/vlsapic.c index 7fa89f6537..79a93018e6 100644 --- a/xen/arch/ia64/vmx/vlsapic.c +++ b/xen/arch/ia64/vmx/vlsapic.c @@ -575,7 +575,8 @@ void guest_write_eoi(VCPU *vcpu) VLSAPIC_INSVC(vcpu,vec>>6) &= ~(1UL <<(vec&63)); local_irq_restore(spsr); VCPU(vcpu, eoi)=0; // overwrite the data - vmx_check_pending_irq(vcpu); + vcpu->arch.irq_new_pending=1; +// vmx_check_pending_irq(vcpu); } uint64_t guest_read_vivr(VCPU *vcpu) diff --git a/xen/arch/ia64/vmx/vmx_process.c b/xen/arch/ia64/vmx/vmx_process.c index 436ecde0f9..6e2a0053d9 100644 --- a/xen/arch/ia64/vmx/vmx_process.c +++ b/xen/arch/ia64/vmx/vmx_process.c @@ -262,10 +262,10 @@ void leave_hypervisor_tail(struct pt_regs *regs) * * Now hardcode the vector as 0x10 temporarily */ - if (event_pending(v)&&(!(VLSAPIC_INSVC(v,0)&(1UL<<0x10)))) { - VCPU(v, irr[0]) |= 1UL << 0x10; - v->arch.irq_new_pending = 1; - } +// if (event_pending(v)&&(!(VLSAPIC_INSVC(v,0)&(1UL<<0x10)))) { +// VCPU(v, irr[0]) |= 1UL << 0x10; +// v->arch.irq_new_pending = 1; +// } if ( v->arch.irq_new_pending ) { v->arch.irq_new_pending = 0; -- 2.30.2